So
Tenley
wants
paragraph
breaks
.
.
.
OK, so I'm not that obstinate about it. Besides, it gave me a chance to exercise my web skills. This one may be a long one, so I'll be nice to you on it.
This was big summer migration weekend #2, also known as Usonia2 and FS go away. Yea, it wasn't fun. Next weekend is actually more accounts (we have over 7000 student accounts now, as opposed to like 500 faculty accounts). Yea, the last time I did an audit of students was a couple years ago. Cleaning up account in the past was work (not it's quite simple), but I figure unless I have a reason (like someone being an idiot with their access), and if it's not a drain on the system (last cleanup was an emergency disk full situation), they "paid $20,000 to go here" and I'll be nice even if they technically aren't eligible. Or maybe I'm just lazy... Anyways, this weekend resulted in many annoyances, and some cool things. Read on.
Rants
+ Aqua
I've decided that Aqua sucks. It looks nice and all, but functionally worthless. Granted on linux I feel the same about metacity and prefer sawfish for configurability, but at least metacity is usable. I might as well be using TWM.
First there's window focus. Why is there delay in bringing a windows to focus? I click on something it should come to the front. I don't like my mouse clicks ignored - it's bad enough I can't just mouseover. Beachballs are even worse. I think that maybe it's letting itself get swapped out too, since on screensaver/sleep recovery to the password prompt it's slow too. That's crazy, it should be 2, maybe 3 seconds from touching the mouse or keyboard and the desktop is visible. Sleep recovery is a little more forgivable, but when the box is up you should be able to type.
That brings us to keyboard focus. When a window is brought to the front due to user interaction, the keyboard focus should come with immediately. Not a couple seconds later. And eating keystrokes until some random time isn't acceptable either. On a window switch the keyboard focus should be captured and events held, the window brought into focus, then the events released into the window. The exception is if the window focus was changed due to window request as opposed to user request, in which case the keyboard focus should stay (as should the "active window" elements), but it doesn't seem to support that anyways.
Window grouping by app. This is somewhat forgivable as it's possibly the result of how the Dock (grr...) works. It'd be nice to be able to do a keyboard window switch between windows of different programs. Currently it's necessary to switch applications and then the window within the app (unless you resort to the mouse). This reminds me of an MDI interface. The windows act SDI, so... What'd be really cool, and actually put it ahead of both linux and XP is to have all three ways of switching windows.
Ordering in intra-app window switching. It's recent priority on app switching. What the heck is the intra-app ordering? Seems to be a loop with semi-random insertion on window create and jump back one on window close. With a lot of windows it gets annoying.
Focus follows mouse. OK, fix the rest and I won't complain...
Window positioning and state. OK, remembering position is good. Remembering secondary positions is good. However if the primary is not on a currently valid screen, that position should not be used. Ever. Also, if a window is minimized, it should stay that way. It should not randomly restore to either the previously mentioned currently non-existant location or any location on a valid screen. The wallpaper changing does not count as an event where windows should be un-minimized.
+ AFP
Enough said. It can be fast, but generally isn't. It allowed some funky stuff that caused lots of headaches this weekend.
+ File Services for Macintosh
If you guessed this is the Windows implementation, you were right. I'm not sure what's worse - how they implemented the protocol or how they integrated it with NTFS.
AFP allows for resource forks. They chose to store them in streams. Cool idea, although streams still haven't taken off except as a good virus conduit due to the braindead checking done on them (I'm so glad only a couple have exploited that, and none have hit Bethel). This is partially due to lack of a decent way to manage them, which makes that part of the annoyance. And the fun part is that while SMB supports streams (sorta), WebDAV doesn't. So Apple uses a different way to store the data now involving hidden files. While it makes it easy for the resource fork to get lost in file moves, it's the Apple way. But no conversion tools.
Macs have allowed some funky stuff in file names. Natively there's not a path depth limit, the delimiter is : so / is allowed in names, and stuff like ?s are valid as well. Well Windows has a 255 char path limit, uses / as it's delimeter so it's not allowed, and uses ? as a wildcard. So what's the right thing to do when implementing the interface between the protocol on the filesystem? You deny opens on paths which exceed the limit, and convert invalid characters to something valid and reversable or maintain an external map a la LFN (deny create on collision again). Nope, the insane paths get allowed (I have doubts NTFS itself knows or cares the nesting level without a recursive check at the FS level which may be the problem there). And the invalid characters end up on the filesystem. This makes it nearly impossible to manage since the system won't let you access files with bad characters. You can usually get around the long paths by collapsing the parent directories to single chars until it's short enough (it doesn't complain - I suspect NTFS may be managed in a flat db-style space with parent references like Active Directory and Exchange are arranged). Oh well, some people need to clean up the cruft in their areas anyways, we just give them a little jump start.
+ Network glitches
Due to crazyness between my home machine and Bethel, I had to actually go in to work Sunday afternoon to finish up some stuff. I was able to ssh tunnel through 3 boxes and get in solidly, but the latency at that point just sucked.
Cool Stuff
+ Free food
We have an awesome VP. Over half the server team was doing stuff this weekend, so we went to Arby's for dinner. Hard to argue with that.
+ Active Directory
Yep, despite the source it's very nice. Everything is abstracted through GUID (think primary key) so even if a name changes things still point to it. "Well known" attributes can be looked up even if you never knew that they were named as the GUID is kept in a static reference. Accounts are also abstracted through the SID which is partially tied to the domain to speed lookups. As the SID is tied to the domain is has to change on inter-domain moves, but former values are kept (SIDHistory). All this means things are extremely flexible and we could eliminate a domain with no problem (related to the accounts at least).
It's also very scalable. I was reading documentation that talks about problems when you hit 400 domain controllers in one domain. Windows has a feature called "location awareness", which when combined with a properly designed active directory structure and DNS allows directing to the closest directory server by network topology for fastest speed. The directory is also designed in a way where almost every interaction can happen on any of the be domain controllers, and they stay in sync through a very well designed and defined process. Multi-master replication isn't easy, but they did it well. They're continuing to make atomic units smaller (such as group membership in Server 2003), so conflicts are less likely. Most of the cool scaling/balancing stuff is handled through srv records.
Group policies allow tremendous flexibility. On the newest versions they allow tweaking the srv records, but then there's firewalling, encryption, enforcing passwords, changing UI attributes, running programs... They way they are applied involves ACLs which makes them even more flexible.
+ SRV DNS records
More things need to use these. Seriously. Think CNAME with three attributes. Priority, weight, and port. Priority is sorta like on MX records, start at the lowest and work your way up as you can't get response from any server at a level (that's better defined than mx). Weight is used to weight a random selection algorithm which works within each priority level. This is useful to compensate for differences in server performance (the one that's twice as fast is twice as likely to be selected) as well as expected loads. Port should be obvious.
Basically combined with how AD uses sites, I've been able to tweak the structure to have in most cases the first server your machine tries to contact be local and very fast. In my testing today I'd hit enter and it'd respond instantly, the login being well underway by the time my finger was off the key. That should help the impression people have of our systems a bit (it was often 2-3 seconds before).
+ Mac OS X
OK, so my view is the GUI part sucks. What's underneath though seems stable. The authentication has me concerned in how Apple wanted to do things (AD is better than NetInfo IMHO), but they give you options. Things like seemless sleep, great multi-monitor support (other than the window manager getting confused as heck), the OS itself never seems to slow down (mainly window management).
Now that I think of it, the GUI seems to be the big killer of both Windows and Mac OS. The actual underlying systems are decent. The GUI people seem to have a good grasp on how it looks, but they can't seem to code consistently. This is one thing linux/unix/X11 have going for them. While it may not look as nice or be as "intuitive", the good UIs are extremely stable, predictable, and designed to allow things to be easily done in an efficient manner.
+ Powerbooks
The hardware rocks. It's solidly build, is designed with everything built in but light and small. The ports are easy to access, and they've dropped unnecessary ones. The keyboard lights up, and the backlight adjusts for the ambient light (although it can be fooled too easily - they need to increase the averaging time and throw out more outliers). There is the issue of the one mouse button. When their interface pushes you towards the mouse, that's just messed up...
+ Ice Cream
My sister called to get help finding a Coldstone down in Eden Prairie. I should go there more often. I think the last time I had Coldstone was in Coronado, which was entirely too long ago.
I think it's time to wrap it up. I think I may have beat Austin. And it was only partially a "what I did" entry. And if you check this out I even did it nicely (I messed up the main page a few days ago with a different entry). I do need sleep though...